import numpy as np
import pandas as pd

# 创建3x3的NumPy数组，数值范围1-9
arr = np.arange(1,10).reshape(3,3)
# 转换为DataFrame，列名为a/b/c
df1 = pd.DataFrame(arr, columns=['a','b','c'])
# 插入key列作为第一列
df1.insert(0, 'key', ['001','003','002'])
print("原始表1:")
print(df1)

# 创建2x2的NumPy数组，数值范围10-13
arr2 = np.arange(10,14).reshape(2,2)
# 转换为DataFrame，列名为a/e
df2 = pd.DataFrame(arr2, columns=['a','e'])
# 插入key列作为第一列
df2.insert(0, 'key', ['001','004'])
print("\n原始表2:")
print(df2)

# 默认左合并（自动匹配列名）
df3 = pd.merge(df1, df2, how='left')
print("\n左合并结果（自动匹配列）:")
print(df3)

# 显式指定key列左合并
df4 = pd.merge(df1, df2, how='left', on='key')
print("\n左合并结果（指定key列）:")
print(df4)

# 右合并（以df2的key为准）
df5 = pd.merge(df1, df2, how='right', on='key')
print("\n右合并结果:")
print(df5)

# 内合并（仅保留两表共有的key），并添加列名后缀
df6 = pd.merge(df1, df2, how='inner', on='key', suffixes=('_1','_r'))
print("\n内合并结果（带列名后缀）:")
print(df6)

# 全外合并（保留所有key），自动排序
df7 = pd.merge(df1, df2, how='outer', on='key', sort=True)
print("\n全外合并结果（排序后）:")
print(df7)